#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,fa[100005],px[2005],py[2005],c[2005],k[2005],vis[2005],head[2005],tot=0,ans=0,cnt=0,ans2=0;
int city[2005],ans3=0;
struct S1{
	int x,y;
}s1[2005];
struct S{
	int u,v,w;
}s[2000005];
struct E{
	int nxt,v3,w3;
}e[4000005];
struct H{
	int c,k,b;
}h[2005];
void add1(int u1,int v1,int w1){
	tot++;s[tot].u=u1;s[tot].v=v1;s[tot].w=w1;
}
void add2(int u1,int v1,int w1){
	cnt++;e[cnt].nxt=head[u1];e[cnt].v3=v1;e[cnt].w3=w1;
	head[u1]=cnt;
}
int find(int f){
	if(fa[f]!=f) return find(fa[f]);
	return f;
}
bool cmp1(S a,S b){
	return a.w<b.w;
}
bool cmp2(H a,H b){
	return a.c<b.c;
}
void dfs(int d){
	vis[d]=1;
	for(int i=head[d];i;i=e[i].nxt){
		if(vis[e[i].v3]!=1){
			if(e[i].w3>c[e[i].v3]){
				ans2++;city[ans2]=e[i].v3;
				ans+=c[e[i].v3];
			}
			else{
				ans3++;s1[ans3].x=d;s1[ans3].y=e[i].v3;
				ans+=e[i].w3;
			}
			dfs(e[i].v3);
		}
		
	}
	return;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>px[i]>>py[i];
	}
	for(int i=1;i<=n;i++){
		cin>>h[i].c;
		h[i].b=i;
		c[i]=h[i].c;
	}
	for(int i=1;i<=n;i++){
		cin>>h[i].k;
	}
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			add1(i,j,(h[i].k+h[j].k)*(abs(px[i]-px[j])+abs(py[i]-py[j]))); 
		}
	}
	sort(s+1,s+n+1,cmp1);
	for(int i=1;i<=n;i++){
		fa[i]=i;
	}
	for(int i=1;i<=tot;i++){
		int u2=find(s[i].u),v2=find(s[i].v);
		if(u2==v2) continue;
		fa[u2]=v2;
		add2(s[i].u,s[i].v,s[i].w);
		add2(s[i].v,s[i].u,s[i].w);
	}
	sort(h+1,h+n+1,cmp2);
	ans+=h[1].c;
	city[1]=h[1].b;
	ans2++;
	dfs(h[1].b);
	cout<<ans<<endl<<ans2<<endl;
	for(int i=1;i<=ans2;i++){
		cout<<city[i]<<" ";
	}
	cout<<endl;
	cout<<ans3<<endl;
	for(int i=1;i<=ans3;i++){
		cout<<s1[i].x<<" "<<s1[i].y<<endl;
	}
	return 0;
}
